package org.faster.dal.core;

import java.util.List;

import org.faster.dal.criteria.Model;
import org.faster.dal.criteria.QueryCriteria;
import org.faster.dal.descriptor.QueryResult;

public interface BaseDAL {
    
    QueryResult selectByCriteria(List<String> fields, QueryCriteria queryCriteria);
    
    
    QueryResult selectByCriteria(QueryCriteria queryCriteria);
    
    
    int countByCriteria(QueryCriteria queryCriteria);
    

    QueryResult selectByPrimaryKey(Model model);
    

    int insert(Model model);
    
    
    int updateByCriteria(Model model, QueryCriteria queryCriteria);
    
    
    int updateByPrimaryKey(Model model);
    

    int deleteByPrimaryKey(Model model);
    
    
    int deleteByCriteria(QueryCriteria queryCriteria);
    
    
    void reloadTable(String tableName);
    

    
    
}
